package sad_G211;

import java.util.Random;

import weka.classifiers.Evaluation;
import weka.classifiers.lazy.IBk;
import weka.core.Instances;

public class Clasificar {
	
	public static void clasificar(Instances data) throws Exception{
		
		//necesitamos mirar cn cuantos vecinos vamos a probar, para k=1-10
		double fm, fmMax = 0;
		int kMejor = 0;
		for(int k = 1; k<=10; k++){
			IBk estimador = new IBk(k);
			// 3.1 Assess the performance of the classifier by means of 10-fold cross-validation 					
			Evaluation evaluator = new Evaluation(data);
			evaluator.crossValidateModel(estimador, data, 10, new Random(1)); // Random(1): the seed=1 means "no shuffle" :-! porque ya hemos barajao
			//Solo necesitamos sacar el fMeasure, comprobamos si es mejor cada vez
			fm = evaluator.weightedFMeasure();
			if(fm > fmMax){
				kMejor = k;
				fmMax = fm;
			}
		}
		
		//imprimimos resultados
		System.out.println("Resultados en funci�n del n�mero de vecinos");
		System.out.println("----------------------------------------------------------");
		System.out.println("La f-Measure m�xima es:  " + fmMax + " para k (n�mero vecinos): " + kMejor);
		System.out.println("----------------------------------------------------------");
		System.out.println("----------------------------------------------------------");
	}

}
